Khái niệm cơ bản EMule

Nhận dạng tệp

Tất cả các tệp đều có giá trị băm để kiểm tra xem tệp tải về có đúng như bản gốc không. Giá trị băm này phụ thuộc vào nội dung của tệp, nó không phải là tên tệp. Điều này cho phép mọi người đều có thể tìm kiếm tệp mình cần mà không cần biết tện tệp mình cần tìm có tên là gì.

Tệp được chia thành các khối có kích thước 9,28 Mb (khối cuối cùng của tệp có thể nhỏ hơn 9,28 Mb). Giá trị băm của tệp được tính toán như sau: đầu tiên tính toán giá trị kiểm tra theo thuật giải MD4 của mỗi khối, sau đó kết nối giá trị kiểm tra MD4 của tất cả các khối thành một chuỗi, tính toán giá trị kiểm tra MD4 của chuỗi này sẽ ra giá trị băm của tệp.

Định danh các máy đồng đẳng

Tương tự như giá trị băm của tệp, mỗi máy đồng đẳng trong mạng cũng có một định danh duy nhất. Giá trị định danh của các máy đồng đẳng được giữ bí mật tuyệt đối bằng giải thuật bắt tay khóa công khai / khóa riêng, tránh trường hợp các định danh của các máy đồng đẳng bị sử dụng sai mục đích.

Tải tệp

Sau khi xác định nguồn của tệp cần tải (có một hoặc nhiều máy đồng đẳng trong mạng đang chia sẻ tệp này), chương trình eMule sẽ liên hệ với các máy đồng đẳng này để yêu cầu cho nó tải tệp. Mỗi chương trình eMule đều duy trì một danh sách 'hàng đợi tải về', bao gồm tất cả các máy đồng đẳng khác đang có yêu cầu tệp. Khi một máy đồng đẳng trong danh sách hàng đợi tải về đến lượt, chương trình eMule ở hai máy liên hệ với nhau và bắt đầu trao đổi tệp. Chương trình eMule có tính thông minh để luôn luôn yêu cầu các khối của tệp hiếm nhất, ít máy đồng đẳng cung cấp nhất để tránh hiện tượng nút cổ chai. Nếu máy đồng đẳng đã có đủ hầu hết các khối hiếm thì nó vẫn yêu cầu các khối còn lại, chương trình eMule chỉ cho phép chia sẻ các khối của tệp đã hoàn chỉnh.

Nén dữ liệu

Trước khi dữ liệu được gửi đi, eMule nén dữ liệu này lại bằng giải thuật zlib với tỉ lệ nén chặt nhất để giảm băng thông mạng. Sau khi đã nén xong eMule chọn gói dữ liệu theo thứ tự từ nhỏ đến lớn để bắt đầu truyền đi.